package cn.wp.ewallet.wallet.service;

import cn.wp.common.core.dto.WpResult;
import cn.wp.ewallet.wallet.model.entity.UserOrderDo;

import java.math.BigDecimal;

public interface UserOrderService extends BaseService<UserOrderDo> {

    /**
     * 创建订单
     *
     * @param publishId   标的ID
     * @param collectType 收款方式
     * @param count       数量
     * @param
     */
    WpResult create(String publishId, String collectType, BigDecimal count, String transPwd);


    /**
     * @param id     订单取消（未发生付款或转账行为前提下如超时取消或订单创建者取消）
     *               1、付款用户取消（未支付前手动或超时自动取消） user_self_cancel
     *               2、驳回取消，虽然已经点击已付款，客服参与之后没有证据说明已付款， sys_cancel
     * @param status
     */
    void cancel(String id, String status);

    /**
     * 创建订单人 点支已付款 CNY
     *
     * @param id
     */
    void pay(String id);

    /**
     * 确认到账（用户或系统） CNY
     * 币划转
     * 1、被下单人 点击确认已到账
     * 2、下单人 未确认已到账，客服介入，有明显证据，系统强制交易完成
     *
     * @param id
     */
    void finish(String id);

    void clearTimeout();

    WpResult getDetail(String orderId);
}
